
package Audio;

import sun.audio.*;

import java.io.FileInputStream;
import java.io.InputStream;
import java.util.*;
import java.net.URL;

public class Audio extends Thread {
	private String dateiname = new String();
	private long dauer = 0; // Dauer der Musik (in Millisekunden)
	private boolean running = false;
	private AudioStream audioStream;

    /**
     * Konstruktor mit Pfad und Dauer der Musik
     * @param filename Pfad zur Musikdatei
     * @param dauer Dauer der Musik in Millisekunden
     */
	public Audio(String filename, long dauer) {
		this.dateiname = filename;
		this.dauer = dauer;
	}
	
	public void run() {
		Date startDate;
		// Erneutes Starten unterbinden:
		if (running) {
			return;
		}
		running = true;

        // Wenn der Thread interrupted wurde soll die Musik nicht mehr gespielt werden
		while (!isInterrupted()) {
            startDate = new Date();
			playAudio();

            // Solange nicht interrupted wurde und das Lied nicht zu Ende ist wird Musik gespielt.
            while(!isInterrupted() && new Date().getTime() - startDate.getTime() < dauer )
            {}

            AudioPlayer.player.stop(audioStream);
		}
	}

    /**
     * Zum Abspielen der Musik
     */
	public void playAudio() {
		try {
            InputStream in = new FileInputStream(dateiname);
			audioStream = new AudioStream(in);
			AudioPlayer.player.start(audioStream);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
